package service;

import java.math.BigDecimal;
import java.math.BigInteger;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.List;

import beans.Branch;
import beans.DataCompany;
import beans.DataStatistics;
import beans.Terminal;

import utils.PageBean;




public interface StatisticsServiceInterface {

	/**
	 * 获取代理商快递网点
	 * 
	 * @param agentID
	 * @param page
	 * @param pageSize
	 * @return
	 */
	public abstract List<Branch> getAgentBranchs(int id, int page, int pageSize);

	/**
	 * 获取设备数
	 * 
	 * @param agentID
	 * @return
	 */
	public abstract BigDecimal getTerminalNum(int id, String flag);

	/**
	 * 获取代理商设备网点数
	 * 
	 * @param agentID
	 * @return
	 */
	public abstract BigDecimal getBranchNum(int agentID);

	/**
	 * 获取使用总天数
	 * 
	 * @param agentID
	 * @return
	 */
	public abstract BigDecimal getTotalDay(int id, String flag,
			Timestamp startTime, Timestamp endTime);

	/**
	 * 获取总存件数
	 * 
	 * @param agentID
	 * @return
	 */
	public abstract BigDecimal getTotalParcel(int id, String flag,
			Timestamp startTime, Timestamp endTime);

	// public BigDecimal getSuperParcel(int agentID){
	// sql =
	// "select count(*) from package p,terminal t,branch b,boxstatus x where b.branch_agent_id = ? and x.boxStatus_boxTypeID = 1 and p.package_terminal_id=t.terminal_id and t.terminal_branch_id=b.branch_id and x.boxStatus_terminalID=t.terminal_id and p.package_box_id=x.boxStatus_boxNum";
	// return new BigDecimal((BigInteger)queryDAO.queryUniques(sql, agentID));
	// }
	/**
	 * 获取已取包裹数
	 * 
	 * @param agentID
	 * @return
	 */
	public abstract BigDecimal getTakenParcel(int id, String flag,
			Timestamp startTime, Timestamp endTime);

	/**
	 * 获取未取包裹数
	 * 
	 * @param agentID
	 * @return
	 */
	public abstract BigDecimal getUnTakenParcel(int id, String flag,
			Timestamp startTime, Timestamp endTime);

	/**
	 * 获取已处理包裹数
	 * 
	 * @param agentID
	 * @return
	 */
	public abstract BigDecimal getDealParcel(int id, String flag,
			Timestamp startTime, Timestamp endTime);

	/**
	 * 获取箱格总数
	 * 
	 * @param agentID
	 * @return
	 */
	public abstract BigDecimal getTotalBox(int id, String flag);

	/**
	 * 获取超大箱格数
	 * 
	 * @param agentID
	 * @return
	 */
	public abstract BigDecimal getSuperBoxNum(int id, String flag);

	/**
	 * 获取大箱格数
	 * 
	 * @param agentID
	 * @return
	 */
	public abstract BigDecimal getBigBoxNum(int id, String flag);

	/**
	 * 获取中等箱格数
	 * 
	 * @param agentID
	 * @return
	 */
	public abstract BigDecimal getMediumBoxNum(int id, String flag);

	/**
	 * 获取小箱格数
	 * 
	 * @param agentID
	 * @return
	 */
	public abstract BigDecimal getSmallBoxNum(int id, String flag);

	/**
	 * 获取基础数据
	 * 
	 * @param agentID
	 * @return
	 */
	DataStatistics getBasicData(int id, Timestamp startTime, Timestamp endTime,
			String flag);

	/**
	 * 获取下级基础数据列表
	 * 
	 * @param agentID
	 * @param page
	 * @param pageSize
	 * @return
	 */
	PageBean<DataStatistics> getDetailData(int id, int page, int pageSize,
			Timestamp startstime, Timestamp endtime, String flag);

	/**
	 * 获取网点设备列表
	 * 
	 * @param brnachID
	 * @param page
	 * @param pageSize
	 * @return
	 */
	List<Terminal> getBranchTerminals(int brnachID, int page, int pageSize);

	/**
	 * 获取快递公司数据
	 * 
	 * @param agentID
	 * @param page
	 * @param pageSize
	 * @param startTime
	 * @param endTime
	 * @return
	 */
	PageBean<DataCompany> getCompanyData(int id, int page, int pageSize,
			Timestamp startTime, Timestamp endTime, String flag);

	/**
	 * 获取快递公司使用情况列表
	 * 
	 * @param id
	 * @param flag
	 * @param page
	 * @param pageSize
	 * @param startTime
	 * @param endTime
	 * @return
	 */
	ArrayList<Object> getCompanyList(int id, String flag, int page,
			int pageSize, Timestamp startTime, Timestamp endTime);

	/**
	 * 获取快递公司总数
	 * 
	 * @param id
	 * @param flag
	 * @return
	 */
	BigInteger distinctCompany(int id, String flag, Timestamp startTime,
			Timestamp endTime);

	PageBean<?> queryDistributionData(int agentID, int curpage, int pageSize);

}